1. Field of Invention
The present invention relates generally to methods and apparatus for use in application builder tools More particularly, the present invention relates to methods and apparatus for inspecting software components.
2. Background
As computer usage becomes increasingly widespread, the desire for custom computer applications which are specific to the needs of a particular user is also increasing. The use of visual builder tools, or application builder tools, enables computer applications to be readily created. Builder tools generally include standard sets of software modules which may be interlinked to create custom-built applications.
Many visual based applications builder tools, as for example Visual Basic available from Microsoft, Inc. of Redmond, Wash., have a graphical user interface which includes a xe2x80x9ctoolboxxe2x80x9d, a xe2x80x9cform windowxe2x80x9d, and a xe2x80x9cproperty sheetxe2x80x9d. A toolbox typically contains icons which represent different classes of components, or software modules. Alternatively, the toolbox may contain text which represents different classes of components. It should be appreciated that many different classes of components may exist. By way of example, different classes may include complex components, e.g., database viewers, and simple components, e.g., buttons. A form window is a display window in which an application may be composed. A component selected from the toolbox may be xe2x80x9cdroppedxe2x80x9d, or otherwise placed, within the form window. A property sheet displays properties, or attributes, relating to the selected component. The properties may include, but are not limited to, information relating to the size, color, and name of the selected component.
Once components are placed in the form window, the components may be linked together to create an application. In other words, an application may be graphically composed by interlinking components in the form window. In an application builder environment, as well as at runtime, it is necessary to determine which methods, properties, and events are supported by a given class, or, more specifically, a component which is a part of the given class. A method is generally a procedure which is accessible to components other than the component with which the procedure is associated. A property may be defined as an attribute that is associated with a component. An example of a property, as previously mentioned, is the size of a component. An event is generally a mechanism which enables a component, e.g., a source object, to notify other components, e.g., listener objects, of state changes.
The process of identifying the methods, properties, and events which are supported by a particular class, or component, is conventionally considered to be an inspection of the component. It should be appreciated that the component itself is not typically inspected in order to identify the methods, properties, and events which are supported by the component. Rather, a component descriptor file that is associated with the component is inspected.
Components are typically created using a standard programming language, as for example the C++ programming language, while component descriptor files are usually created using a specification language such as an Interface Definition Language (IDL). A component descriptor file is a file which identifies methods, properties, and events that are supported by the component with which the component descriptor file is associated. Therefore, in order for a programmer to both create a component and provide a description of that component, the programmer must master both a standard programming language, e.g., C++, and an interface definition language. This process of mastering two languages often proves to be time-consuming and, as a result, inefficient. Further, the component description must be compiled down to a type library which describes the implementation of the component. That is, a binary description for the component must be created such that different portions of a program or an application may inspect the binary description to determine the implementation of the component. This binary description must then be updated each time a component is changed, which is time-consuming and, therefore, often proves to inefficient. What is needed, therefore, is an efficient apparatus and process which allows application builder tools to readily identify the methods, properties, and events which are supported by a particular class.
The present invention relates, in one aspect, to a method for analyzing a software component within an application builder tool. The method for analyzing a software component that may be visually moved within an application builder tool involves first obtaining the software component that is to be analyzed. Once the software component is obtained, a determination is made regarding whether the software component has an associated information class. If the software component has an associated information class, a query is made for information stored within the information class. In one embodiment, the information stored within the information class includes methods, properties, or events.
In another embodiment, when it is determined that the software component does not have an associated information class, a set of methods associated with a first class is identified. Then, at least one design pattern is applied to identify a first property that is associated with the software component. In such an embodiment, applying at least one design pattern to identify the first property associated with the software component involves searching for at least one method which defines the first property.
In accordance with another aspect of the present invention, a computer system for collecting information associated with a software component includes a computer which holds a builder tool that is arranged to analyze the software component. The computer is arranged to obtain the software component that is to be analyzed by the builder tool. The software component is part of a first class, and is visually manipulatable. The computer is used to determine if the software component has an associated information class. An associated information class includes methods, properties, and/or events. The information class is queried about information stored therein when there is an associated information class.
In one embodiment, the computer is also used to identify a set of properties, methods, or events associated with the first class if an associated information class is not in existence. Then, at least one design pattern is applied to identify a first property, method or event, respectively, that is associated with the software component. In another embodiment, the software component and the information class are created using the same language. In such an embodiment, the software component is a Java(trademark) Bean and the information class is a BeanInfo class.
According to yet another aspect of the present invention, a software component that may be visually moved within a builder tool running on a computer includes an information class and methods, properties, and/or events that are defined by the information class and supported by a first class. In one embodiment, the methods, properties, and/or events are accessible to a second class that is separate from the first class.
These and other advantages of the present invention will become apparent upon reading the following detailed description and studying the various figures of the drawings.